/**
 * @(#)ManagerException.java 23/01/05
 *
 * Copyright 2005-2010 Psiqueware S.A. de C.V. All Rights Reserved.
 *
 * This software is the proprietary information Psiqueware S.A. de C.V.
 * Use is subject to license terms.
 *
 * Usuario : Psique
 * Creaci&oacute;n: 08-feb-2006 - 18:11:10
 * Cambios :
 *  Fecha | Autor  |  Cambios
 *  08-feb-2006 | <a href = "mailto:AngelElectrico@PsiqueWare.com">Angel El&eacute;ctrico</a> | Creaci&oacute;n del Objeto.
 */

package com.psiqueware.alheli.manager;

/**
 * Excepci&oacute;n que sucede si hay un error en un encargado de negocio.
 * <br/>Paquete Original: com.psiqueware.basico
 * <br/>Nombre  Original: ManagerException
 * <br/><a href="ManagerException.java.html"><i>Ver C&oacute;digo Fuente</i> </a>
 *
 * @author <a href="mailto:AngelElectrico@PsiqueWare.com">Angel El&eacute;ctrico</a>
 * @version Revision: 1.1 08-feb-2006 18:11:10
 * @noinspection ClassWithoutNoArgConstructor, ClassWithoutLogger, ClassTooDeepInInheritanceTree, ClassWithTooManyConstructors, DeserializableClassInSecureContext, SerializableClassInSecureContext
 */

public class ManagerException extends Exception
{

    /**
     * Object que nos puede proporcionar mas informaci&oacute;n sobre lo sucedido.
     */
    private Object m_object = null;

    /**
     * @noinspection FieldNameHidesFieldInSuperclass
     */
    public static final String STANDARD_MSG = "No se pudo realizar la operaci&oacute;n actual.";

    /**
     * Constructor for ManagerException.
     */
    public ManagerException()
    {
        super(STANDARD_MSG);
    }

    /**
     * Constructor for ManagerException.
     *
     * @param message que se pretende contenga la excepci&oacute;n.
     */
    public ManagerException(String message)
    {
        super(message);
    }

    /**
     * Constructor for ManagerException.
     *
     * @param message que se pretende contenga la excepci&oacute;n.
     * @param o       objeto del error.
     */
    public ManagerException(String message, Object o)
    {
        super(message);
        this.m_object = o;
    }

    /**
     * Constructor for ManagerException.
     *
     * @param message que se pretende contenga la excepci&oacute;n.
     * @param cause   excepci&oacute;n que origin&oacute; esta.
     */
    public ManagerException(String message, Throwable cause)
    {
        super(message, cause);

    }

    /**
     * Constructor for ManagerException.
     *
     * @param message que se pretende contenga la excepci&oacute;n.
     * @param cause   excepci&oacute;n que origin&oacute; esta.
     * @param o       objeto del error.
     */
    public ManagerException(String message, Throwable cause, Object o)
    {
        super(message, cause);
        this.m_object = o;

    }

    /**
     * Constructor for ManagerException.
     *
     * @param cause excepci&oacute;n que origin&oacute; esta.
     */
    public ManagerException(Throwable cause)
    {
        super(STANDARD_MSG, cause);
    }

    /**
     * Constructor for ManagerException.
     *
     * @param cause excepci&oacute;n que origin&oacute; esta.
     * @param o     objeto del error.
     */
    public ManagerException(Throwable cause, Object o)
    {
        super(STANDARD_MSG, cause);
        this.m_object = o;
    }

    /**
     * Convierte este {@link ManagerException} a su representaci&oacute;n textual.
     *
     * @noinspection DuplicateStringLiteralInspection
     */
    public String toString()
    {

        StringBuilder sb = new StringBuilder();
        sb.append("<Instance Class = '").append(this.getClass()).append("'>");
        sb.append("<msg>").append(super.getLocalizedMessage()).append("</msg>");
        sb.append("<super>").append(super.toString()).append("</super>");
        sb.append("<object>").append(m_object).append("</object>");
        sb.append("</Instance>");
        return sb.toString();
    }

    /**
     * Devuelve el objeto que puede proporcionarnos mas informaci&oacute;n sobre el porque sucedi&oacute; esta
     * excepci&oacute;n.
     */
    public Object getObject()
    {
        return m_object;
    }

    /**
     * Establece el objeto que puede proporcionarnos mas informaci&oacute;n sobre el porque sucedi&oacute; esta
     * excepci&oacute;n.
     */
    public void setObject(Object object)
    {
        this.m_object = object;
    }
}

